package 二叉树;

import java.util.LinkedList;
import java.util.Queue;

/**
 * @Author: LDeng
 * @Date: 2021-03-01 17:25
 * https://leetcode-cn.com/problems/invert-binary-tree/
 */
public class _226_翻转二叉树 {
//    public TreeNode invertTree(TreeNode root) {
//        if(root==null) return root;
//
//
//        invertTree(root.left);
//        invertTree(root.right);
//
//        //后序遍历
//        //遍历二叉树所有节点， 左右呼唤
//        TreeNode tmp=root.left;
//        root.left=root.right;
//        root.right=tmp;
//
//
//        return root;
//
//    }


    public TreeNode invertTree(TreeNode root) {
        if(root==null) return root;
        Queue<TreeNode> queue=new LinkedList<>();
        queue.offer(root);
        while(!queue.isEmpty()){
            TreeNode node=queue.poll();
            TreeNode temp=node.left;
            node.left=node.right;
            node.right=temp;

            if(node.left!=null){
                queue.offer(node.left);
            }
            if(node.right!=null){
                queue.offer(node.right);
            }
        }
        return root;
    }

}
